//引入第三方包 express
var express = require('express')
//实例化express
var app = express()
// 设置静态资源托管文件
//app.use()   注册中间件
//express.static()   expre内置的一个静态资源托管的中间件
app.use(express.static('static'))
//在所有接口前设置,处理post请求参数的中间件
app.use(express.json())
app.use(express.urlencoded({ extended: false }))

//返回客户端要的数据
var arr = [
    { email: 'c.ndsxd@nfkh.sd', name: '文霞	', pass: '1234', phone: '15643078914', isgroup: true, status: true },
    { email: 'z.yplyfugy@crqjw.ht', name: '金芳	', pass: '1234', phone: '19742882847', isgroup: true, status: false },
    { email: 'c.ndsxd@nfkh.sd', name: '孔霞	', pass: '1234', phone: '17581531867', isgroup: true, status: true },
    { email: 'k.clsuwhfouw@wiguv.in', name: '马娟	', pass: '1234', phone: '13208340038', isgroup: true, status: true },
    { email: 'c.ndsxd@nfkh.sd', name: '文霞	', pass: '1234', phone: '15643078914', isgroup: true, status: true },
    { email: 'z.yplyfugy@crqjw.ht', name: '金芳	', pass: '1234', phone: '19742882847', isgroup: true, status: true },
    { email: 'c.ndsxd@nfkh.sd', name: '孔霞	', pass: '1234', phone: '17581531867', isgroup: true, status: true },
    { email: 'k.clsuwhfouw@wiguv.in', name: '马娟	', pass: '1234', phone: '13208340038', isgroup: true, status: true },
]

//分页(查询)
app.get( '/user/list', (req,res)=>{
    //req 请求对象, 包含了和本次请求相关的所有信息( 请求地址,请求方式,携带的参数 )

    //res 响应对象, 可以借助res向客户端返回信息( 字符串, json格式数据, 网页 )

    //获取get类型请求的参数: req.query 
    var {page,count} = req.query;

    //分页
    //slice(0,10) 取前10个  
    //slice(10,20) 取第11-20个  
    //slice(20,30) 取第21-30个  
    var newarr = arr.slice( (page-1)*count, page*count );
    //返回数据
    res.send( { code:200, msg:'请求成功!',list: newarr } );

} )

//模糊搜索
app.get( '/user/search', (req,res)=>{
    //接收参数
    var { searchkey } = req.query;
    //根据参数,从用户的name属性中过滤
    var newarr = arr.filter((item)=>{
        //indexOf() 返回的是下标, 没找到返回-1
        //return item.name.indexOf(searchkey) != -1
        //includes() 返回true/false
        //return item.name.includes(searchkey)
        return  new RegExp(searchkey).test( item.name ) 
    })
    //返回数据
    res.send({ code:200,msg:'查询成功!',list:newarr })
})

//登陆
app.post( '/user/login', (req,res)=>{
    
    //想要接收post类型请求的参数 必须提前设置能解析post请求参数的中间件 express.json 和 express.urlencoded 
    var {phone,pass} = req.body;

    //用来自客户端的数据 做判断, 判断是否在服务端的用户列表中
    var i = arr.findIndex((item,index)=>{
        return item.phone == phone && item.pass == pass;
    })

    //如果i不是-1, 说明来自客户端的数据是合法的.
    if( i != -1 ){
        //登陆成功时, 可以一并返回 登陆成功的用户信息,登陆令牌
        res.send( {code:200, msg:'登陆成功!',userinfo: arr[i], token:'' } );
    }else{
        res.send( {code:400, msg:'登陆失败!'} );
    }
} )
//设置监听
app.listen(8080,()=>{
    console.log('服务端运行在: http://localhost:8080');
})